package io;

import java.io.BufferedReader;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.util.Properties;

/**
 * Properties类
 */
public class Properties_ {

    public static void main(String[] args) throws Exception {
        /*
            如下一个配置文件
            ip=192.168.0.13
            user=root
            pwd=123456

            设计程序读取 ip user pwd的值
         */

        // 传统方法
        //读取mysql.properties并获取相应值
        BufferedReader br = new BufferedReader(new FileReader("src\\mysql.properties"));
        String line = null;

        while ((line = br.readLine()) != null) {
            String[] split = line.split("=");
            System.out.println(split[0] + "值是" + split[1]);
        }

        br.close();

        //properties类
        /*
            Properties 类是专门用于读写配置文件的集合类
            配置文件的格式
            键=值
            tip: 键值对不需要有空格，值不需要用引号包起来，默认是String

            Properties常用方法
            load 加载配置文件的键值对到Properties对象
            list 将数据显示到指定设备
            getProperty(key) 根据键获取值
            setProperty(key, value) 设置键值对到 Properties 对象
            store 将 Properties 中的键值对存储到配置文件
         */

        System.out.println("====使用Properties读取====");
        //1.创建Properties对象
        Properties properties = new Properties();
        //2.加载指定配置文件
        properties.load(new FileReader("src\\mysql.properties"));
        //3.把k-v显示到控制台
        properties.list(System.out);
        //4.根据key获取值
        String user = properties.getProperty("user");
        String password = properties.getProperty("pwd");
        System.out.println("用户名：" + user + "密码：" + password);

        //5.创建新配置文件
        properties.setProperty("charset", "utf-8");
        properties.setProperty("user", "汤姆");//保存时，是中文的Unicode码值
        properties.setProperty("password", "abc123");
        //将k-v 存储到文件中
        properties.store(new FileOutputStream("src\\mysql2.properties"), null);
        System.out.println("保存配置文件成功...");

    }
}
